import axios from 'axios';
// SUCCESS_CODE成功码，TIMEOUT延迟
import {SUCC_CODE, TIMEOUT} from './config';

// 快速点击时，取消前一次未完成请求
const CancelToken = axios.CancelToken;
// cancel接收一个取消方法，取消请求
let cancel;

// 获取内容数据 --ajax -----------------------------------
// 这里的数据自带延迟1s，无须再模拟延迟1s获取数据
export const getCategoryContent = (id) => { 
  // 当前请求如果没有完成就取消，如果完成了，就什么也不做
  cancel && cancel('取消了前一次的请求');
  cancel = null;

  return axios.get(`http://www.imooc.com/api/category/content/${id}`,{
    timeout: TIMEOUT,
    // 取消请求
    cancelToken: new CancelToken(function executor(c) {
      // 每次发送请求，将c赋值给cancel，将本次请求取消
      cancel = c;
    })
  }).then(res => {
    if (res.data.code === SUCC_CODE) {
      // console.log(res.data)
      return res.data.content;
    }

    throw new Error('没有成功获取到数据！');
  }).catch(err => {
    if (axios.isCancel(err)) { // 取消前一次的请求
      console.log(err);
    } else {
      // handle error
      console.log(err);
    }
  });
};